#include <opencv2/opencv.hpp>
#include <iostream>

int main (int argc, char** argv) {
    cv::Mat m(500, 500, CV_8UC3, cv::Scalar(0));
    cv::circle(m, cv::Point(200, 200), 80, cv::Scalar(255), 2);
    cv::circle(m, cv::Point(200, 200), 80, cv::Scalar(255,30, 100), 2, 8, 1);

    cv::line(m, cv::Point(10, 10), cv::Point(300,19), cv::Scalar(0, 200), 3);
    cv::LineIterator line(m, cv::Point(30,5), cv::Point(10,200));
    double step = line.count / 255.0;
    for(int i =0; i < line.count; i++, ++line){
        // cv::Point pos = line.pos();
        // m.at<cv::Vec3b>(pos.y, pos.x)[0] = (int) (i * step);
        // m.at<cv::Vec3b>(pos.y, pos.x)[0] = (int) (i * step);
        // m.at<cv::Vec3b>(pos.y, pos.x)[0] = (int) (i * step);
        cv::Vec3b* pix = (cv::Vec3b*)*line;
        // 以上指针如何使用？颜色通道不对
        pix[0] = (int) (i * step);
        // pix[1] = 255;
        pix[2] = 255;
    }
    

    cv::imshow("exercise 6", m);

    cv::waitKey(-1);
    return 0;
}